package com.qianyu.core.entity.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.qianyu.core.entity.base.BaseIdDto;
import com.qianyu.core.entity.base.PageDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.util.Date;

@Data
@ApiModel(value = "OrderPayDto")
public class OrderPayDto {

    @Data
    @ApiModel(value = "OrderPayDto&OrderPaySaveDto")
    public static class OrderPaySaveDto{
        /**
         * 支付通道id
         */
        @NotNull(message="[支付通道id]不能为空")
        @ApiModelProperty("支付通道id")
        private Long payWayId;

        /**
         * 订单备注
         */
        @NotBlank(message="[订单备注]不能为空")
        @Size(max= 255,message="编码长度不能超过255")
        @ApiModelProperty("订单备注")
        private String remark;

        /**
         * 转U单号
         */
        @Size(max= 80,message="编码长度不能超过80")
        @ApiModelProperty("交易单号")
        private String txid;

        /**
         * 订单金额
         */
        @NotNull(message="[订单金额]不能为空")
        @ApiModelProperty("订单金额")
        private BigDecimal orderAmount;

        /**
         * 订单U数量(创建时的汇率)
         */
        @NotNull(message="[订单U数量(创建时的汇率)]不能为空")
        @ApiModelProperty("订单U数量(创建时的汇率)")
        private BigDecimal orderUsdt;

        /**
         * USDT收款信息
         */
        @NotNull(message="[USDT收款账号id]不能为空")
        @ApiModelProperty("USDT收款账号id")
        private Long walletAccountId;

    }

    @Data
    @ApiModel(value = "OrderPayDto&OrderPayPageDto")
    public static class OrderPayPageDto extends PageDTO{
        @ApiModelProperty(value = "起始时间")
        @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
        private Date startTime;


        @ApiModelProperty(value = "结束时间")
        @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
        private Date endTime;

        /**
         * 订单状态:0=待支付,1=待审核,2=已成功,3=已失败,4=已关闭
         */
        @ApiModelProperty("订单状态:0=待支付,1=待审核,2=已成功,3=已失败,4=已关闭")
        private Integer status;
    }

    @Data
    @ApiModel(value = "OrderPayDto&OrderPayAuditDto")
    public static class OrderPayAuditDto extends BaseIdDto {

        /**
         * 订单状态:0=待支付,1=待审核,2=已成功,3=已失败,4=已关闭
         */
        @NotNull(message="[订单状态:0=待支付,1=待审核,2=已成功,3=已失败,4=已关闭]不能为空")
        @ApiModelProperty(value = "订单状态:0=待支付,1=待审核,2=已成功,3=已失败,4=已关闭",required = true)
        private Integer status;

        /**
         * USDT汇率
         */
        @NotBlank(message="[USDT汇率]不能为空")
        @Size(max= 32,message="编码长度不能超过32")
        @ApiModelProperty("USDT汇率")
        private BigDecimal usdtRate;
        /**
         * 实付USDT
         */
        @NotNull(message="[实付USDT]不能为空")
        @ApiModelProperty("实付USDT")
        private BigDecimal payUsdt;
        /**
         * 实际支付金额
         */
        @NotNull(message="[实际支付金额]不能为空")
        @ApiModelProperty("实际支付金额")
        private BigDecimal payAmount;
        /**
         * 提交支付时间
         */
        @ApiModelProperty("提交支付时间")
        @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
        private Date payTime;

    }
}
